/**
 * 服务器返回类型数据通用数据类型
 */
export interface ResponseData {
  code: number
  message: string
  ok: boolean
}

/**
 * SPU数据的ts类型
 */
export interface SpuData {
  id?: number
  spuName: string
  description: string
  tmId: number | string
  category3Id: string | number
  spuSaleAttrList: null | SaleAttr[]
  spuImageList: null | SpuImage[]
}

/**
 * SPU数据类型数组
 */
export type SpuDataList = SpuData[]

/**
 * 返回已有SPU数据类型的ts数据
 */
export interface HasSpuResponse extends ResponseData {
  data: {
    spuDataList: SpuDataList
    total: number
    size: number
    current: number
    searchCount: boolean
    pages: number
  }
}

/**
 * 品牌数据的ts类型
 */
export interface TradeMark {
  id: number
  tmName: string
  logoUrl: string
}

/**
 * 品牌接口返回的ts类型
 */
export interface AllTradeMark extends ResponseData {
  data: TradeMark[]
}

/**
 * 商品图片数据的ts类型
 */
export interface SpuImage {
  id?: number
  createTime?: string
  updataTime?: string
  spuId?: number
  imgName?: string
  imgUrl?: string
  name?: string
  url?: string
}
export type SpuImageList = SpuImage[]

/**
 * 图片接口返回数据的ts类型
 */
export interface SpuHasImageResponseData extends ResponseData {
  data: SpuImageList
}

/**
 * 商品属性数据的ts类型
 */
export interface SpuAttrValue {
  id?: number
  createTime?: string
  updateTime?: string
  spuId?: number
  baseSaleAttrId: number
  saleAttrValueName: string
  saleAttrName?: string
  isChecked?: string
}

/**
 * 存储已有的销售属性值ts类型
 */
export type SpuAttrValueList = SpuAttrValue[]
//销售属性对象的ts类型
export interface SaleAttr {
  id?: number
  createTime?: string
  updateTime?: string
  spuId?: number
  baseSaleAttrId: number
  saleAttrName: string
  spuSaleAttrValueList: SpuAttrValueList
  //为添加标签新增数据
  isShow?: boolean
  saleAttrValue?: string
  //skuForm新增数据
  saleIdAndValueId?: string
}
export type SaleAttrList = SaleAttr[]

/**
 * SPU已有的销售属性接口返回数据ts类型
 */
export interface SaleAttrResponseData extends ResponseData {
  data: SaleAttrList
}

export interface HasSaleAttr {
  id: number
  name: string
}

/**
 * 已有的全部的SPU得返回数据ts类型
 */
export interface HasSaleAttrResponseData extends ResponseData {
  data: HasSaleAttr[]
}

export interface Attr {
  attrId: number | string
  valueId: number | string
}

export interface saleAttr {
  saleAttrId: number | string
  saleAttrValueId: number | string
}

/**
 * SKU的数据类型
 */
export interface SkuData {
  category3Id: number | string //三级分类的ID
  spuId: number | string //已有SPU的ID
  tmId: number | string //SPU品牌的ID
  skuName: string //SKU名字
  price: string | number //SKU价格
  weight: string | number //SKU重量
  skuDesc: string //SKU描述
  skuAttrValueList?: Attr[] //平台属性的收集
  skuSaleAttrValueList?: saleAttr[] //销售属性
  skuDefaultImg: string //SKU图片地址
}

/**
 * SKU接口返回的数据类型
 */
export interface HasSkuResponseData extends ResponseData {
  data: SkuData[]
}
